var fs = require('fs');
var path = require('path');//路径上升到模块

/**
 * @func    找出指定目录下最大文件
 * @param   {string} dir
 * @param   {Function} cb 
 */
function findLargest(dir, cb) {
    fs.readdir(dir, (err, files) => {
        // console.log(files);
        if (err) {
            return cb(err);
        }
        // cb(null, files)
        console.log(files);
        // 判断是 文件还是目录
        var couter = files.length;// 数量
        var errored = false;// 是否出错
        var stats = [];// 文件信息
        files.forEach((file, index) => {
            // 得到相对于当前 的 路径
            console.log(path.join(dir, file));// 把目录名和文件名拼接
            fs.stat(path.join(dir, file), (err, stat) => {
                if (errored) return;
                if (err) {
                    errored = true;
                    return cb(err);
                }// 只要由某个位置出问题，返回cb(err)
                stats[index] = stat;// 所有文件信息，入数组了
                if (--couter == 0) {// 判断是否是最后一个
                    var fileStats = stats
                        .filter((stat) => stat.isFile());
                    let maxFileSize = 0;
                    for (let fileStat of fileStats) {
                        if (fileStat.size > maxFileSize) {
                            maxFileSize = fileStat.size;
                        }
                    }
                    cb(null, maxFileSize);
                    //console.log(largest);
                }
            })
        })
    }); // 异步
}

findLargest('./test/dir2/dir3', (err, fileSize) => {
    if (err) {
        return console.error(err);
    }
    console.log('largest file war:', fileSize);
})
